home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Macintosh Easy Open / Documentation / Developer / Interfaces / PInterfaces / StandardFile.p < prev    next >
Encoding:
Text File  |  1994-12-12  |  10.7 KB  |  328 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        StandardFile.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Built by:            anonymous
  8.                  From:                StandardFile.i, revision 2, dated 2/25/94
  9.                  With Interfacer:    1.1d4e2
  10.  
  11.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  12.                  List the version information from above in Problem Description.
  13.  
  14. }
  15.  
  16. {$IFC UNDEFINED UsingIncludes}
  17. {$SETC UsingIncludes := 0}
  18. {$ENDC}
  19.  
  20. {$IFC NOT UsingIncludes}
  21.  UNIT StandardFile;
  22.  INTERFACE
  23. {$ENDC}
  24.  
  25. {$IFC UNDEFINED __STANDARDFILE__}
  26. {$SETC __STANDARDFILE__ := 1}
  27.  
  28. {$I+}
  29. {$SETC StandardFileIncludes := UsingIncludes}
  30. {$SETC UsingIncludes := 1}
  31.  
  32. {$IFC UNDEFINED __TYPES__ }
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {    ConditionalMacros.p                                            }
  38. {    MixedMode.p                                                    }
  39. {        Traps.p                                                    }
  40. {$ENDC}
  41. {$IFC UNDEFINED __DIALOGS__ }
  42.  
  43. {$IFC UNDEFINED __DIALOGS__}
  44. {$I Dialogs.p}
  45. {$ENDC}
  46. {    Windows.p                                                    }
  47. {        Quickdraw.p                                                }
  48. {            QuickdrawText.p                                        }
  49. {                IntlResources.p                                    }
  50. {        Events.p                                                }
  51. {            OSUtils.p                                            }
  52. {        Controls.p                                                }
  53. {            Menus.p                                                }
  54. {    TextEdit.p                                                    }
  55. {$ENDC}
  56. {$IFC UNDEFINED __FILES__ }
  57.  
  58. {$IFC UNDEFINED __FILES__}
  59. {$I Files.p}
  60. {$ENDC}
  61. {    SegLoad.p                                                    }
  62. {$ENDC}
  63.  
  64. CONST
  65. { resource IDs and item offsets of pre-7.0 dialogs }
  66.     putDlgID                    = -3999;
  67.     putSave                        = 1;
  68.     putCancel                    = 2;
  69.     putEject                    = 5;
  70.     putDrive                    = 6;
  71.     putName                        = 7;
  72.     getDlgID                    = -4000;
  73.     getOpen                        = 1;
  74.     getCancel                    = 3;
  75.     getEject                    = 5;
  76.     getDrive                    = 6;
  77.     getNmList                    = 7;
  78.     getScroll                    = 8;
  79. { resource IDs and item offsets of 7.0 dialogs }
  80.     sfPutDialogID                = -6043;
  81.     sfGetDialogID                = -6042;
  82.     sfItemOpenButton            = 1;
  83.     sfItemCancelButton            = 2;
  84.     sfItemBalloonHelp            = 3;
  85.     sfItemVolumeUser            = 4;
  86.     sfItemEjectButton            = 5;
  87.  
  88.     sfItemDesktopButton            = 6;
  89.     sfItemFileListUser            = 7;
  90.     sfItemPopUpMenuUser            = 8;
  91.     sfItemDividerLinePict        = 9;
  92.     sfItemFileNameTextEdit        = 10;
  93.     sfItemPromptStaticText        = 11;
  94.     sfItemNewFolderUser            = 12;
  95. { pseudo-item hits for use in DlgHook }
  96.     sfHookFirstCall                = -1;
  97.     sfHookCharOffset            = $1000;
  98.     sfHookNullEvent                = 100;
  99.     sfHookRebuildList            = 101;
  100.     sfHookFolderPopUp            = 102;
  101.     sfHookOpenFolder            = 103;
  102. { the following are only in system 7.0+ }
  103.     sfHookOpenAlias                = 104;
  104.     sfHookGoToDesktop            = 105;
  105.     sfHookGoToAliasTarget        = 106;
  106.     sfHookGoToParent            = 107;
  107.     sfHookGoToNextDrive            = 108;
  108.     sfHookGoToPrevDrive            = 109;
  109.     sfHookChangeSelection        = 110;
  110.  
  111.     sfHookSetActiveOffset        = 200;
  112.     sfHookLastCall                = -2;
  113.  
  114. { the refcon field of the dialog record during a
  115.  modalfilter or dialoghook contains one of the following }
  116.  
  117. {$SETC sfMainDialogRefCon := 'stdf'}
  118. {$SETC sfNewFolderDialogRefCon := 'nfdr'}
  119. {$SETC sfReplaceDialogRefCon := 'rplc'}
  120. {$SETC sfStatWarnDialogRefCon := 'stat'}
  121. {$SETC sfLockWarnDialogRefCon := 'lock'}
  122. {$SETC sfErrorDialogRefCon := 'err '}
  123.  
  124. TYPE
  125.     {$ALIGN MAC68K}
  126.     SFReply = PACKED RECORD
  127.         good:                    BOOLEAN;
  128.         copy:                    BOOLEAN;
  129.         fType:                    OSType;
  130.         vRefNum:                INTEGER;
  131.         version:                INTEGER;
  132.         fName:                    Str63;
  133.     END;
  134.     {$ALIGN RESET}
  135.     {$ALIGN MAC68K}
  136.     StandardFileReply = PACKED RECORD
  137.         sfGood:                    BOOLEAN;
  138.         sfReplacing:            BOOLEAN;
  139.         sfType:                    OSType;
  140.         sfFile:                    FSSpec;
  141.         sfScript:                ScriptCode;
  142.         sfFlags:                INTEGER;
  143.         sfIsFolder:                BOOLEAN;
  144.         sfIsVolume:                BOOLEAN;
  145.         sfReserved1:            LONGINT;
  146.         sfReserved2:            INTEGER;
  147.     END;
  148.     {$ALIGN RESET}
  149.     DlgHookProcPtr = ProcPtr;  { FUNCTION DlgHook(item: INTEGER; theDialog: DialogPtr): INTEGER; }
  150.     DlgHookUPP = UniversalProcPtr;
  151. CONST
  152.     uppDlgHookProcInfo = $000003A0; { FUNCTION (2 byte param, 4 byte param): 2 byte result; }
  153.  
  154. FUNCTION NewDlgHookProc(userRoutine: DlgHookProcPtr): DlgHookUPP;
  155.     {$IFC USES68KINLINES }
  156.     INLINE $2E9F;
  157.     {$ENDC}
  158.  
  159. FUNCTION CallDlgHookProc(item: INTEGER; theDialog: DialogPtr; userRoutine: DlgHookUPP): INTEGER;
  160.     {$IFC USES68KINLINES}
  161.     INLINE $205F, $4E90;
  162.     {$ENDC}
  163. TYPE
  164.     FileFilterProcPtr = ProcPtr;  { FUNCTION FileFilter(PB: ParmBlkPtr): BOOLEAN; }
  165.     FileFilterUPP = UniversalProcPtr;
  166. CONST
  167.     uppFileFilterProcInfo = $000000D0; { FUNCTION (4 byte param): 1 byte result; }
  168.  
  169. FUNCTION NewFileFilterProc(userRoutine: FileFilterProcPtr): FileFilterUPP;
  170.     {$IFC USES68KINLINES }
  171.     INLINE $2E9F;
  172.     {$ENDC}
  173.  
  174. FUNCTION CallFileFilterProc(PB: ParmBlkPtr; userRoutine: FileFilterUPP): BOOLEAN;
  175.     {$IFC USES68KINLINES}
  176.     INLINE $205F, $4E90;
  177.     {$ENDC}
  178. { the following also include an extra parameter of "your data pointer" }
  179.  
  180. TYPE
  181.     DlgHookYDProcPtr = ProcPtr;  { FUNCTION DlgHookYD(item: INTEGER; theDialog: DialogPtr; yourDataPtr: UNIV Ptr): INTEGER; }
  182.     DlgHookYDUPP = UniversalProcPtr;
  183. CONST
  184.     uppDlgHookYDProcInfo = $00000FA0; { FUNCTION (2 byte param, 4 byte param, 4 byte param): 2 byte result; }
  185.  
  186. FUNCTION NewDlgHookYDProc(userRoutine: DlgHookYDProcPtr): DlgHookYDUPP;
  187.     {$IFC USES68KINLINES }
  188.     INLINE $2E9F;
  189.     {$ENDC}
  190.  
  191. FUNCTION CallDlgHookYDProc(item: INTEGER; theDialog: DialogPtr; yourDataPtr: UNIV Ptr; userRoutine: DlgHookYDUPP): INTEGER;
  192.     {$IFC USES68KINLINES}
  193.     INLINE $205F, $4E90;
  194.     {$ENDC}
  195. TYPE
  196.     ModalFilterYDProcPtr = ProcPtr;  { FUNCTION ModalFilterYD(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; yourDataPtr: UNIV Ptr): BOOLEAN; }
  197.     ModalFilterYDUPP = UniversalProcPtr;
  198. CONST
  199.     uppModalFilterYDProcInfo = $00003FD0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 1 byte result; }
  200.  
  201. FUNCTION NewModalFilterYDProc(userRoutine: ModalFilterYDProcPtr): ModalFilterYDUPP;
  202.     {$IFC USES68KINLINES }
  203.     INLINE $2E9F;
  204.     {$ENDC}
  205.  
  206. FUNCTION CallModalFilterYDProc(theDialog: DialogPtr; VAR theEvent: EventRecord; VAR itemHit: INTEGER; yourDataPtr: UNIV Ptr; userRoutine: ModalFilterYDUPP): BOOLEAN;
  207.     {$IFC USES68KINLINES}
  208.     INLINE $205F, $4E90;
  209.     {$ENDC}
  210. TYPE
  211.     FileFilterYDProcPtr = ProcPtr;  { FUNCTION FileFilterYD(PB: ParmBlkPtr; yourDataPtr: UNIV Ptr): BOOLEAN; }
  212.     FileFilterYDUPP = UniversalProcPtr;
  213. CONST
  214.     uppFileFilterYDProcInfo = $000003D0; { FUNCTION (4 byte param, 4 byte param): 1 byte result; }
  215.  
  216. FUNCTION NewFileFilterYDProc(userRoutine: FileFilterYDProcPtr): FileFilterYDUPP;
  217.     {$IFC USES68KINLINES }
  218.     INLINE $2E9F;
  219.     {$ENDC}
  220.  
  221. FUNCTION CallFileFilterYDProc(PB: ParmBlkPtr; yourDataPtr: UNIV Ptr; userRoutine: FileFilterYDUPP): BOOLEAN;
  222.     {$IFC USES68KINLINES}
  223.     INLINE $205F, $4E90;
  224.     {$ENDC}
  225. TYPE
  226.     ActivateYDProcPtr = ProcPtr;  { PROCEDURE ActivateYD(theDialog: DialogPtr; itemNo: INTEGER; activating: BOOLEAN; yourDataPtr: UNIV Ptr); }
  227.     ActivateYDUPP = UniversalProcPtr;
  228. CONST
  229.     uppActivateYDProcInfo = $000036C0; { PROCEDURE (4 byte param, 2 byte param, 1 byte param, 4 byte param); }
  230.  
  231. FUNCTION NewActivateYDProc(userRoutine: ActivateYDProcPtr): ActivateYDUPP;
  232.     {$IFC USES68KINLINES }
  233.     INLINE $2E9F;
  234.     {$ENDC}
  235.  
  236. PROCEDURE CallActivateYDProc(theDialog: DialogPtr; itemNo: INTEGER; activating: BOOLEAN; yourDataPtr: UNIV Ptr; userRoutine: ActivateYDUPP);
  237.     {$IFC USES68KINLINES}
  238.     INLINE $205F, $4E90;
  239.     {$ENDC}
  240.  
  241. TYPE
  242.     SFTypeList = ARRAY [0..3] OF OSType;
  243.  
  244. {$IFC __cplusplus }
  245. {$ENDC}
  246.  
  247. PROCEDURE SFPutFile(where: Point; prompt: ConstStr255Param; origName: ConstStr255Param; dlgHook: DlgHookUPP; VAR reply: SFReply);
  248.     {$IFC USES68KINLINES}
  249.     INLINE $3F3C, $0001, $A9EA;
  250.     {$ENDC}
  251. PROCEDURE SFGetFile(where: Point; prompt: ConstStr255Param; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply);
  252.     {$IFC USES68KINLINES}
  253.     INLINE $3F3C, $0002, $A9EA;
  254.     {$ENDC}
  255. PROCEDURE SFPPutFile(where: Point; prompt: ConstStr255Param; origName: ConstStr255Param; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP);
  256.     {$IFC USES68KINLINES}
  257.     INLINE $3F3C, $0003, $A9EA;
  258.     {$ENDC}
  259. PROCEDURE SFPGetFile(where: Point; prompt: ConstStr255Param; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP);
  260.     {$IFC USES68KINLINES}
  261.     INLINE $3F3C, $0004, $A9EA;
  262.     {$ENDC}
  263. PROCEDURE StandardPutFile(prompt: ConstStr255Param; defaultName: ConstStr255Param; VAR reply: StandardFileReply);
  264.     {$IFC USES68KINLINES}
  265.     INLINE $3F3C, $0005, $A9EA;
  266.     {$ENDC}
  267. PROCEDURE StandardGetFile(fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; VAR reply: StandardFileReply);
  268.     {$IFC USES68KINLINES}
  269.     INLINE $3F3C, $0006, $A9EA;
  270.     {$ENDC}
  271. PROCEDURE CustomPutFile(prompt: ConstStr255Param; defaultName: ConstStr255Param; VAR reply: StandardFileReply; dlgID: INTEGER; where: Point; dlgHook: DlgHookYDUPP; filterProc: ModalFilterYDUPP; VAR activeList: INTEGER; activate: ActivateYDUPP; yourDataPtr: UNIV Ptr);
  272.     {$IFC USES68KINLINES}
  273.     INLINE $3F3C, $0007, $A9EA;
  274.     {$ENDC}
  275. PROCEDURE CustomGetFile(fileFilter: FileFilterYDUPP; numTypes: INTEGER; typeList: SFTypeList; VAR reply: StandardFileReply; dlgID: INTEGER; where: Point; dlgHook: DlgHookYDUPP; filterProc: ModalFilterYDUPP; VAR activeList: INTEGER; activate: ActivateYDUPP; yourDataPtr: UNIV Ptr);
  276.     {$IFC USES68KINLINES}
  277.     INLINE $3F3C, $0008, $A9EA;
  278.     {$ENDC}
  279. { StandardOpenDialog uses the 'open' resource ID=128 in your application for the type list }
  280.  
  281. { It runs on all versions of sytem software since System 4.2 }
  282.  
  283. FUNCTION StandardOpenDialog(VAR reply: StandardFileReply): OSErr;
  284. PROCEDURE sfpputfile(VAR where: Point; VAR prompt: CHAR; VAR origName: CHAR; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP); C;
  285. PROCEDURE sfgetfile(VAR where: Point; VAR prompt: CHAR; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply); C;
  286. PROCEDURE sfpgetfile(VAR where: Point; VAR prompt: CHAR; fileFilter: FileFilterUPP; numTypes: INTEGER; typeList: SFTypeList; dlgHook: DlgHookUPP; VAR reply: SFReply; dlgID: INTEGER; filterProc: ModalFilterUPP); C;
  287. PROCEDURE sfputfile(VAR where: Point; VAR prompt: CHAR; VAR origName: CHAR; dlgHook: DlgHookUPP; VAR reply: SFReply); C;
  288.  
  289.   New StandardFile routine comments:
  290.  
  291.   activeList is pointer to array of integer (16-bits).
  292.   first integer is length of list.
  293.   following integers are possible activatable DITL items, in
  294.   the order that the tab key will cycle through.  The first
  295.   in the list is the item made active when dialog is first shown.
  296.  
  297.   activateProc is a pointer to a procedure like:
  298.  
  299.    PROCEDURE MyActivateProc(theDialog:  DialogPtr;
  300.           itemNo:  INTEGER;
  301.           activating: BOOLEAN;
  302.           yourDataPtr: Ptr);
  303.  
  304.   The activateProc is called with activating=FALSE on the itemNo
  305.   about to deactivate then with activating=TRUE on the itemNo
  306.   about to become the active item. (like activate event)
  307.  
  308.   yourDataPtr is a nice little extra that makes life easier without
  309.   globals.  CustomGetFile & CustomPPutFile when calling any of their
  310.   call back procedures, pushes the extra parameter of yourDataPtr on
  311.   the stack.
  312.  
  313.   In addition the filterProc in CustomGetFile & CustomPPutFile is called
  314.   before before SF does any mapping, instead of after.
  315. }
  316.  
  317. {$IFC __cplusplus }
  318. {$ENDC}
  319.  
  320. {$SETC UsingIncludes := StandardFileIncludes}
  321.  
  322. {$ENDC} {__STANDARDFILE__}
  323.  
  324. {$IFC NOT UsingIncludes}
  325.  END.
  326. {$ENDC}
  327.